home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 December / PCWorld_1999-12_cd.bin / Software / Servis / UrthMDB / Urthman's MDB Module.ht_ / Urthman's MDB Module.ht
Text File  |  1999-10-03  |  22KB  |  488 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-Type"
  6. content="text/html; charset=iso-8859-1">
  7. <meta name="GENERATOR" content="Microsoft FrontPage 2.0">
  8. <title>Using the Code Module</title>
  9. </head>
  10.  
  11. <body bgcolor="#A3CDDA">
  12. <div align="center"><center>
  13.  
  14. <table border="1" cellpadding="8" cellspacing="0" width="100%"
  15. bgcolor="#5A8BAB">
  16.     <tr>
  17.         <td align="center" width="100%"><font color="#FFFF00"
  18.         size="6" face="Arial"><em><strong><b>Urthman's MDB
  19.         Construction Kit.</b></strong></em></font></td>
  20.     </tr>
  21. </table>
  22. </center></div><div align="center"><center>
  23.  
  24. <table border="0" cellpadding="4" cellspacing="4" width="100%">
  25.     <tr>
  26.         <td align="center"><font size="5" face="Arial"><em><b>Using
  27.         the Code Module.</b></em></font></td>
  28.     </tr>
  29. </table>
  30. </center></div>
  31.  
  32. <p align="center"><font size="3" face="Arial"><strong>Once you
  33. can identify the code module,<br>
  34. what can you do with it?</strong></font></p>
  35.  
  36. <hr>
  37. <div align="center"><center>
  38.  
  39. <table border="0" cellpadding="8" width="75%">
  40.     <tr>
  41.         <td align="center" width="50%"><a href="#Naming"><font
  42.         face="Arial"><strong>Naming Conventions</strong></font></a></td>
  43.         <td align="center" width="50%"><a href="#ImpHeader"><font
  44.         face="Arial"><strong>Importing with Headers</strong></font></a></td>
  45.     </tr>
  46.     <tr>
  47.         <td align="center" width="50%"><a href="#Exporting"><font
  48.         face="Arial"><strong>Exporting to ASCII files</strong></font></a></td>
  49.         <td align="center" width="50%"><a href="#ImpMods"><font
  50.         face="Arial"><strong>Modify the Import routines</strong></font></a></td>
  51.     </tr>
  52.     <tr>
  53.         <td align="center" width="50%"><a href="#Importing"><font
  54.         face="Arial"><strong>Importing from ASCII files</strong></font></a></td>
  55.         <td align="center" width="50%"> </td>
  56.     </tr>
  57.     <tr>
  58.         <td align="center" width="50%"><a href="#ExpHeader"><font
  59.         face="Arial"><strong>Exporting with Headers</strong></font></a></td>
  60.         <td align="center" width="50%"><a
  61.         href="Urthman's%20MDB%20Construction%20Kit.htm"><font
  62.         face="Arial"><strong>Main Document</strong></font></a></td>
  63.     </tr>
  64. </table>
  65. </center></div>
  66.  
  67. <hr>
  68.  
  69. <p><a name="Naming"><font face="Arial"><strong>Naming</strong></font></a><font
  70. face="Arial"><strong> Conventions:</strong></font></p>
  71.  
  72. <p><font size="2" face="Arial">The code module is generated with
  73. the assumption that the <strong>Urthman's MDB Code Generator</strong>
  74. has been (or will be) used to generate the main code module(s)
  75. for the database itself. All references to data variables revolve
  76. around this assumption, using the naming convention standardized
  77. by that code generator.</font></p>
  78.  
  79. <p><font size="2" face="Arial"><strong><u>Urthman's MDB Code
  80. Generator naming convention:</u></strong><strong> </strong>The
  81. main database code module name would be derived from the actual
  82. file name, where a database file named <strong>MyData.mdb</strong>
  83. would result in a code module named <strong>mdbMyData.bas</strong>.
  84. The table name(s) subsequently drive the subroutine name
  85. variations, and combined with the field names, create the data
  86. variable names around which both programs revolve. </font></p>
  87.  
  88. <p><font size="2" face="Arial">For example, a variable named <strong>mdbMyData.MyTable_FirstName</strong>
  89. would refer to a field named <strong>FirstName</strong> in a
  90. table called <strong>MyTable</strong> in a data file named <strong>MyData.mdb</strong>.
  91. This is both simple and logical and should therefore be easy to
  92. follow and track.</font></p>
  93.  
  94. <p><font size="2" face="Arial">The <strong>Urthman's MDB
  95. Construction Kit</strong>, as an extension of the MDB Code
  96. Generator, generates import and export code in a module of its
  97. own. Taking the database file name in the above example, the MDB
  98. Construction Kitwould create a code module file named <strong>mioMyData.bas</strong>,
  99. where the '</font><font size="3" face="Arial">io</font><font
  100. size="2" face="Arial">' stands for </font><font size="3"
  101. face="Arial">i</font><font size="2" face="Arial">nput and </font><font
  102. size="3" face="Arial">o</font><font size="2" face="Arial">utput.</font></p>
  103. <div align="center"><center>
  104.  
  105. <table border="1" width="90%" bgcolor="#008080">
  106.     <tr>
  107.         <td align="center" width="100%"><a name="Exporting"><font
  108.         color="#FFFF00" face="Arial"><strong>Exporting</strong></font></a><font
  109.         color="#FFFF00" face="Arial"><strong> Data using code
  110.         modules from both programs:</strong></font></td>
  111.     </tr>
  112. </table>
  113. </center></div><div align="center"><center>
  114.  
  115. <table border="0" cellpadding="8" cellspacing="8" width="100%">
  116.     <tr>
  117.         <td bgcolor="#FFFFFF"><font color="#008040" size="2"
  118.         face="Courier New"><strong>' Call for the first record in
  119.         the data table to initialize the database</strong></font><blockquote>
  120.             <p><font color="#000080" size="2" face="Courier New">Call
  121.             mdbMyData.MyTableFirst</font></p>
  122.         </blockquote>
  123.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  124.         Open the ASCII export file</strong></font></p>
  125.         <blockquote>
  126.             <p><font color="#000080" size="2" face="Courier New">Call
  127.             mioMyData.OpenExport("MyTable",
  128.             "C:\Temp\MyDemo.Txt")</font></p>
  129.         </blockquote>
  130.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  131.         Start the process loop</strong></font></p>
  132.         <blockquote>
  133.             <p><font color="#000080" size="2" face="Courier New">Do
  134.             Until mdbMyData.MyTableERR</font></p>
  135.         </blockquote>
  136.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  137.         This line needs the specific criteria for selecting the
  138.         exportable record data<br>
  139.         ' and leaves a record count in the Long numeric DataCount</strong></font></p>
  140.         <blockquote>
  141.             <blockquote>
  142.                 <p><font color="#000080" size="2"
  143.                 face="Courier New">If ( - what ever criteria - )
  144.                 Then DataCount = mioMyData.ExportData</font></p>
  145.             </blockquote>
  146.         </blockquote>
  147.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  148.         Get the next record and continue</strong></font></p>
  149.         <blockquote>
  150.             <blockquote>
  151.                 <p><font color="#000080" size="2"
  152.                 face="Courier New">Call mdbMyData.MyTableNext</font></p>
  153.             </blockquote>
  154.             <p><font color="#000080" size="2" face="Courier New">Loop</font></p>
  155.         </blockquote>
  156.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  157.         Close the ASCII file and database</strong></font></p>
  158.         <blockquote>
  159.             <p><font color="#000080" size="2" face="Courier New">Call
  160.             mioMyData.CloseFile</font></p>
  161.         </blockquote>
  162.         <blockquote>
  163.             <p><font color="#000080" size="2" face="Courier New">Call
  164.             mdbMyData.CloseMyData</font></p>
  165.         </blockquote>
  166.         </td>
  167.     </tr>
  168. </table>
  169. </center></div><div align="center"><center>
  170.  
  171. <table border="1" width="90%" bgcolor="#008080">
  172.     <tr>
  173.         <td align="center" width="100%"><a name="Importing"><font
  174.         color="#FFFF00" face="Arial"><strong>Importing</strong></font></a><font
  175.         color="#FFFF00" face="Arial"><strong> Data using code
  176.         modules from both programs:</strong></font></td>
  177.     </tr>
  178. </table>
  179. </center></div><div align="center"><center>
  180.  
  181. <table border="0" cellpadding="8" cellspacing="8" width="100%">
  182.     <tr>
  183.         <td bgcolor="#FFFFFF"><font color="#008040" size="2"
  184.         face="Courier New"><strong>' It's not necessary to open
  185.         the database, but the ASCII file needs it.</strong></font><blockquote>
  186.             <p><font color="#000080" size="2" face="Courier New">Call
  187.             mioMyData.OpenImport("MyTable",
  188.             "C:\Temp\Import.Txt")</font></p>
  189.         </blockquote>
  190.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  191.         Start the process loop -- pretty simple?</strong></font></p>
  192.         <blockquote>
  193.             <p><font color="#000080" size="2" face="Courier New">Do
  194.             Until Not mioMyData.ImportData</font></p>
  195.         </blockquote>
  196.         <blockquote>
  197.             <blockquote>
  198.                 <p><font color="#000080" size="2"
  199.                 face="Courier New">DoEvents</font></p>
  200.             </blockquote>
  201.             <p><font color="#000080" size="2" face="Courier New">Loop</font></p>
  202.         </blockquote>
  203.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  204.         Close the ASCII file and database</strong></font></p>
  205.         <blockquote>
  206.             <p><font color="#000080" size="2" face="Courier New">Call
  207.             mioMyData.CloseFile</font></p>
  208.         </blockquote>
  209.         <blockquote>
  210.             <p><font color="#000080" size="2" face="Courier New">Call
  211.             mdbMyData.CloseMyData</font></p>
  212.         </blockquote>
  213.         </td>
  214.     </tr>
  215. </table>
  216. </center></div><div align="center"><center>
  217.  
  218. <table border="1" width="90%" bgcolor="#008080">
  219.     <tr>
  220.         <td align="center" width="100%"><a name="ExpHeader"><font
  221.         color="#FFFF00" face="Arial"><strong>Exporting Header and
  222.         Trailer Records</strong></font></a></td>
  223.     </tr>
  224. </table>
  225. </center></div>
  226.  
  227. <p><font size="2" face="Arial">Exporting headers using comma
  228. delimited file formats is a relatively transparent process. If
  229. the designated output file does not exist, then the first record
  230. written when the file is opened for export is the header record.
  231. If the file does already exist, then no header record is
  232. generated. This header record contains the column headings for
  233. the data records that follow that header. This allows for quick
  234. referencing and import into a standard spread sheet for sorting,
  235. editting and reporting data.</font></p>
  236.  
  237. <p><font size="2" face="Arial">Fixed length records use headers
  238. and trailers for supplemental data and control. For this purpose,
  239. a set of data variables for each header and trailer record is
  240. made available in the code module, accompanied by a matching
  241. Export subroutine. Populate the data variables and export the
  242. header or trailer record.</font></p>
  243. <div align="center"><center>
  244.  
  245. <table border="1" width="90%" bgcolor="#008080">
  246.     <tr>
  247.         <td align="center" width="100%"><a name="ImpHeader"><font
  248.         color="#FFFF00" face="Arial"><strong>Importing Header and
  249.         Trailer Records</strong></font></a></td>
  250.     </tr>
  251. </table>
  252. </center></div>
  253.  
  254. <p><font size="2" face="Arial">Importing headers in comma
  255. delimited formats is used to "realign" column data with
  256. the table fields. Generally, the first record in a comma
  257. delimited file is the header record, and if present, these
  258. heading fields correspond to table field names. Refer to the code
  259. module comments for more detailed information since some criteria
  260. depend entirely on the structure of the data file.</font></p>
  261.  
  262. <p><font size="2" face="Arial">Importing headers and trailers
  263. with fixed record length files is a slightly more complex
  264. exercise. The header records generally open with data related to
  265. the detail records that follow and the common element terminates
  266. with a trailer record that contains summary information (i.e.,
  267. record count or revenue total) to serve as a data integrity
  268. check. A subsequent header resets the common information for
  269. another batch of detail records.</font></p>
  270.  
  271. <p><font size="2" face="Arial">The MDB Contruction Kit permits
  272. the definition and application of header and trailer record
  273. layouts, including up to three fields whose content can identify
  274. which header or trailer is being encountered. These recognition
  275. codes are used in the generated code for (1) recognizing and
  276. reporting the encounter of any header and trailr record and (2)
  277. to pass default values into the header and trailer records during
  278. export.</font></p>
  279.  
  280. <p><font size="2" face="Arial">A public variable called RecType
  281. will contain a code identifying the type of record encountered
  282. during an import pass. The following code sample demonstrates all
  283. of the import data functions and options.</font></p>
  284. <div align="center"><center>
  285.  
  286. <table border="0" cellpadding="8" cellspacing="8" width="100%">
  287.     <tr>
  288.         <td bgcolor="#FFFFFF"><font color="#008040" size="2"
  289.         face="Courier New"><strong>'Open the import file and let
  290.         it rip ...</strong></font><blockquote>
  291.             <p><font color="#000080" size="2" face="Courier New">Call
  292.             mioMyData.OpenImport("MyTable",
  293.             "C:\Temp\Import.Txt")</font></p>
  294.             <p><font color="#000080" size="2" face="Courier New">Do
  295.             Until Not <strong>mioMyData.ImportData</strong></font></p>
  296.             <blockquote>
  297.                 <p><font color="#000080" size="2"
  298.                 face="Courier New">If <strong>mioMyData.ImportError</strong>
  299.                 Then</font></p>
  300.             </blockquote>
  301.         </blockquote>
  302.         <p><font color="#008040" size="2" face="Courier New"><strong>'This
  303.         would occur if and when a comma delimited file header
  304.         record <br>
  305.         'does not contain enough data elements or primary key
  306.         elements to <br>
  307.         'provide properly qualified data record content.</strong></font></p>
  308.         <blockquote>
  309.             <blockquote>
  310.                 <p><font color="#000080" size="2"
  311.                 face="Courier New">End If</font></p>
  312.             </blockquote>
  313.             <blockquote>
  314.                 <p><font color="#000080" size="2"
  315.                 face="Courier New">Select Case <strong>mioMyData.RecType</strong></font></p>
  316.                 <p><font color="#000080" size="2"
  317.                 face="Courier New">Case "HDR"</font></p>
  318.             </blockquote>
  319.         </blockquote>
  320.         <p><font color="#008040" size="2" face="Courier New"><strong>'Comma
  321.         Delimited Header record</strong></font></p>
  322.         <blockquote>
  323.             <blockquote>
  324.                 <p><font color="#000080" size="2"
  325.                 face="Courier New">Case "DTL"</font></p>
  326.             </blockquote>
  327.         </blockquote>
  328.         <p><font color="#008040" size="2" face="Courier New"><strong>'Comma
  329.         Delimited Detail record - save the data using the other<br>
  330.         'code module generated by the Urthman's MDB Code
  331.         Generator.</strong></font></p>
  332.         <blockquote>
  333.             <blockquote>
  334.                 <blockquote>
  335.                     <p><font color="#000080" size="2"
  336.                     face="Courier New">Call mdbMyData.MyTableSave</font></p>
  337.                 </blockquote>
  338.             </blockquote>
  339.         </blockquote>
  340.         <blockquote>
  341.             <blockquote>
  342.                 <p><font color="#000080" size="2"
  343.                 face="Courier New">Case "FHD"</font></p>
  344.             </blockquote>
  345.         </blockquote>
  346.         <p><font color="#008040" size="2" face="Courier New"><strong>'Fixed
  347.         Length File Header record - the beginning of a file</strong></font></p>
  348.         <blockquote>
  349.             <blockquote>
  350.                 <p><font color="#000080" size="2"
  351.                 face="Courier New">Case "FTL"</font></p>
  352.             </blockquote>
  353.         </blockquote>
  354.         <p><font color="#008040" size="2" face="Courier New"><strong>'Fixed
  355.         Length File Trailer record - the end or summary of a file</strong></font></p>
  356.         <blockquote>
  357.             <blockquote>
  358.                 <p><font color="#000080" size="2"
  359.                 face="Courier New">Case "BHD"</font></p>
  360.             </blockquote>
  361.         </blockquote>
  362.         <p><font color="#008040" size="2" face="Courier New"><strong>'Fixed
  363.         Length Batch Header record - the beginning of a batch</strong></font></p>
  364.         <blockquote>
  365.             <blockquote>
  366.                 <p><font color="#000080" size="2"
  367.                 face="Courier New">Case "BTL"</font></p>
  368.             </blockquote>
  369.         </blockquote>
  370.         <p><font color="#008040" size="2" face="Courier New"><strong>'Fixed
  371.         Length Batch Trailer record - the end or summary of a
  372.         batch</strong></font></p>
  373.         <blockquote>
  374.             <blockquote>
  375.                 <p><font color="#000080" size="2"
  376.                 face="Courier New">Case "DET"</font></p>
  377.             </blockquote>
  378.         </blockquote>
  379.         <p><font color="#008040" size="2" face="Courier New"><strong>'Fixed
  380.         Length Detail record - save the data using the other<br>
  381.         'code module generated by the Urthman's MDB Code
  382.         Generator.</strong></font></p>
  383.         <blockquote>
  384.             <blockquote>
  385.                 <blockquote>
  386.                     <p><font color="#000080" size="2"
  387.                     face="Courier New">Call mdbMyData.MyTableSave</font></p>
  388.                 </blockquote>
  389.             </blockquote>
  390.         </blockquote>
  391.         <blockquote>
  392.             <blockquote>
  393.                 <p><font color="#000080" size="2"
  394.                 face="Courier New">End Select</font></p>
  395.             </blockquote>
  396.             <p><font color="#000080" size="2" face="Courier New">Loop</font></p>
  397.         </blockquote>
  398.         <p><font color="#008040" size="2" face="Courier New"><strong>'
  399.         Close the ASCII file and database</strong></font></p>
  400.         <blockquote>
  401.             <p><font color="#000080" size="2" face="Courier New">Call
  402.             mioMyData.CloseFile</font></p>
  403.         </blockquote>
  404.         <blockquote>
  405.             <p><font color="#000080" size="2" face="Courier New">Call
  406.             mdbMyData.CloseMyData</font></p>
  407.         </blockquote>
  408.         </td>
  409.     </tr>
  410. </table>
  411. </center></div><div align="center"><center>
  412.  
  413. <table border="1" width="90%" bgcolor="#008080">
  414.     <tr>
  415.         <td align="center" width="100%"><a name="ImpMods"><font
  416.         color="#FFFF00" face="Arial"><strong>Modifying the Import
  417.         Routines.</strong></font></a></td>
  418.     </tr>
  419. </table>
  420. </center></div>
  421.  
  422. <p><font size="2" face="Arial">The import routines are heavily
  423. commented, including indicating where certain operations can take
  424. place to prevent unwanted data overwrites. This is primarily a
  425. function of comma delimited file exchanges. The strategy involves
  426. exporting data to a comma delimited file and importing this data
  427. into a spread sheet for review, analysis and edits. After making
  428. these adjustments, some columns may have been moved around for
  429. the convenience of the user, and some insignificant columns may
  430. have been deleted.</font></p>
  431.  
  432. <p><font size="2" face="Arial">During the standard import sweep,
  433. the column headings allow for proper realignment with the
  434. original corresponding table fields, however, the deleted columns
  435. would result in null data being written into that field. In order
  436. to preserve the previously populated data of those deleted
  437. columns, a record-find operation can be called. This serves two
  438. purposes: (1) to populate the deleted column fields with
  439. "Default" data and (2) to clear or neutralize ALL data
  440. fields prior to generating a new data record.</font></p>
  441.  
  442. <p><font size="2" face="Arial">The optimal location and method
  443. for this function are fully commented in the specific import
  444. routine. This code makes the assumption that the Urthman's MDB
  445. Code Generator has been or will be used for creating the general
  446. code module for all other database functions.</font></p>
  447.  
  448. <hr>
  449. <div align="center"><center>
  450.  
  451. <table border="0" cellpadding="8" cellspacing="0" width="100%">
  452.     <tr>
  453.         <td align="center" width="33%"><div align="center"><center><table
  454.         border="0" cellpadding="8" cellspacing="0"
  455.         bgcolor="#C0C0C0">
  456.             <tr>
  457.                 <td align="right" valign="top"><font
  458.                 color="#000000" size="1" face="Arial"><strong>Contact:</strong></font></td>
  459.                 <td valign="top"><font color="#000000" size="1"
  460.                 face="Arial"><strong>John Stanley Enterprises</strong><br>
  461.                 PO Box 1672<br>
  462.                 Valrico, FL 33595-1672</font></td>
  463.             </tr>
  464.             <tr>
  465.                 <td align="right" valign="top"><font size="1"
  466.                 face="Arial"><strong>URL:</strong></font></td>
  467.                 <td><a href="http://www.a-znet.com/jse/"><font
  468.                 size="1" face="Arial"><strong>http://www.a-znet.com/jse/</strong></font></a></td>
  469.             </tr>
  470.             <tr>
  471.                 <td align="right" valign="top"><font
  472.                 color="#000000" size="1" face="Arial"><strong>Email:</strong></font></td>
  473.                 <td valign="top"><a href="mailto:urthman@usa.net"><font
  474.                 color="#000000" size="1" face="Arial"><strong>urthman@usa.net</strong></font></a><font
  475.                 color="#000000" size="1" face="Arial"><strong> </strong></font></td>
  476.             </tr>
  477.         </table>
  478.         </center></div></td>
  479.         <td align="center" width="33%"> </td>
  480.         <td align="center" width="33%"><font size="1"
  481.         face="Arial">Microsoft, Windows, NT and Visual Basic are
  482.         registered trademarks of the Microsoft Corporation.</font></td>
  483.     </tr>
  484. </table>
  485. </center></div>
  486. </body>
  487. </html>
  488.